A computer system is comprised of different components or devices that operate together to form the resultant system. Typical computer devices such as the central processing unit usually are supplied with the computer system initially whereas other devices can be installed into the computer system after the initial configuration of the system. The devices of the computer system are generally coupled together via interconnects which may be of several types, such as system and peripheral bus.
Networks are typically comprised of a variety of different electronic components or devices that are able to identify and communicate with each other by using an addressing and communication scheme that is known by each participant. The network allows computers to communicate with each other and share resources and information. Computer networks are made up of basic hardware building blocks to interconnect network nodes, such as Network Interface Cards, Bridges, Hubs, Switches, and Routers. A network card, network adapter or NIC (network interface card) is a piece of computer hardware designed to allow computers to communicate over a computer network. It provides physical access to a networking medium.
Device drivers are well known in the art. When a device is installed onto a computer by the user, a device driver has to be loaded to enable communication with the device. A device driver is software that is used to describe and control the device for the operating system. A virtual device driver is a specific type of device driver that, like a device driver for a physical existent device, has full access to the operating system kernel and is able to communicate directly to a physical port. In difference to device drivers for existent hardware a virtual device driver is loaded without a hardware device being detected by the system. A virtual device driver manipulates kernel mode code using existing hardware resources to emulate a device that is not present on the computer. A virtual driver is given more access than a traditional device driver because it is not restricted to talking to just one particular device.
Virtual device drivers are designed to handle hardware device contention between multiple processes and to translate or buffer data transfers from a virtual machine to hardware devices. A virtual machine is a self-contained operating environment that behaves as if it were a separate computer. When two or more processes attempt to access the same device, some method of contention management must be used. A virtual device driver allows each process to act as though it has exclusive access to the device.
For example, a virtual printer driver would provide the printing process with a virtual printer port, and characters written to the port would be written to a print spooler. The virtual device driver would then send the job to the printer when it becomes available. Another method would be to assign the physical device to only one process at a time, so that when a process attempts to access the device while it is in use, the virtual device driver does not pass the request to the actual hardware, and the process operates as though the hardware did not exist. Virtual device drivers also virtualize input/output to the device and for example a virtual network device driver translates this information into commands to be sent across a network to a hardware server. A technique that allows error free communication between devices that obligatory require exchange of protocol status information's faster than provided by the underlying network transport is not currently known in the art. However, such a technique would offer significant advantages over the prior art.
A method for bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device as described in U.S. Pat. No. 7,089,335 is known in the art. However, if this method is used to connect devices that work with a time critical protocol and the transmission speed of the network segments fall under a certain value communication errors occur at the devices.
As disclosed in U.S. Pat. No. 6,968,307 a technique for creation and use of virtual device drivers on a serial bus is already known. Beside the creation of virtual device drivers also an extension of the peripheral bus even over a local area network (LAN) and/or a wide area network (WAN) is described. The method emulates the peripheral bus itself with all its typical features and characteristics. This method does not give an acceptable answer to the question how devices can communicate successful if the underlying network media itself does not meet the requirements of the peripheral bus in concern of speed and timing.
An extension of fast peripheral buses like the institute of electrical and electronics engineers (IEEE) 1394 “Firewire” bus over comparatively slow transport media such as wireless networks as disclosed by the IEEE 1394 Trade Association in December 2001 allows error free communication between endpoints of such an extended peripheral bus in terms of bus availability and clock time synchronization. However, a solution for devices that obligatory require the exchange of protocol information's at a speed that is higher than the wireless network is not included.
The IEEE 1394 Trade associations white paper “Networking IEEE 1394 Clusters via UWB over Coaxial Cable” discloses and covers many parts of communication between devices on a extended peripheral bus inclusive all timing requirements of video and audio devices. However, this disclosure is solely based on using an underlying network technology that is quite as fast as the peripheral bus itself. Slow, dropped out or unavailable networks are not covered by this disclosure.
Virtualization technologies from various manufacturers already allow the creation of additional virtual hardware resources such as network interface card, hard disk and computer system (Guest machine) on a physical existent computer system (Host machine). This technique emulates a machine with it's physical properties. By establishing interconnections between the physical devices of the host and the devices of the emulated guest devices of the guest can be attached to similar physical devices of the host.
However, devices on peripheral buses of the host machine such as nodes of a serial bus cannot be attached to nodes of the peripheral bus of the guest machine because the peripheral bus of the host is independent of the guest's bus. Even if possible, if the architecture of the guest's operating system fundamentally differs from the host's operating system the attachment of newly added devices on peripheral buses of the host to the guest's peripheral buses most likely fails because the device is announced by the operating system and not the machine.
In Digi International's AnywhereUSB Remote I/O Concentrator documentation another method is disclosed that is applicable for accessing physically existent USB devices on an external hardware device which is attached to a network cable from a remote computer that is also connected to a network. At the remote computer a service is used that connects to the external hardware by using the TCP/IP network transport protocol of the remote computer. Thru the network connection the service establishes a socket connection to the device. A hardware description information of each external USB connector is installed on the local computer. The local serial bus of the computer is extended with these new nodes and makes them part of the local serial bus. By design, this technique extends the local serial bus of the computer to the external device by emulating a wired connection over the network. The external device itself gets a part of the local serial bus. This approach requires that the external device with it's USB connectors can be reached by the network and provides information's about the installed connectors to the local service. If USB connectors are part of another computer's local serial bus or different types of connectors are used this method fails because the computer does not provide information's about the nodes installed on his local serial bus thru the network.